"""
作者：李伟丽
日期：2022/09/09
"""
import logging
import logging.handlers
# import time

from config import BASE_DIR


def init_log_config(filename, when="midnight", interval=1, backup_count=7):
    """
    功能：初始化日志配置函数
    :param filename: 日志文件名
    :param when: 设置日志切分的间隔时间单位
    :param interval: 间隔时间单位的个数，指等待多少个when后，继续进行日志记录
    :param backup_count: 保存日志文件的个数
    :return:
    """

    # 1. 创建 日志器对象
    logger = logging.getLogger()

    # 2. 设置日志器的打印级别
    logger.setLevel(logging.INFO)
    # logging.DEBUG 调试级别
    # logging.INFO 信息级别
    # logging.WARNING 警告级别
    # logging.ERROR 错误级别
    # logging.CRITICAL 严重错误级别

    # 3. 创建 处理器对象
    # 3.1 创建 输出到控制台 处理器对象
    st = logging.StreamHandler()
    # 3.2 创建 输出到日志文件 处理器对象
    fh = logging.handlers.TimedRotatingFileHandler(filename, when=when, interval=interval, backupCount=backup_count, encoding="utf-8")

    # 4. 日志信息格式
    fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"
    formatter = logging.Formatter(fmt)

    # 5. 给处理器设置日志信息格式
    st.setFormatter(formatter)
    fh.setFormatter(formatter)

    # 6. 给日志添加处理器
    logger.addHandler(st)
    logger.addHandler(fh)


if __name__ == '__main__':
    init_log_config(BASE_DIR + "/log/test.log", when='midnight', interval=2, backup_count=10)
    logging.debug('我是一个调试级别的日志')
    logging.info('我是一个信息级别的日志')
    logging.warning('我是一个警告级别的日志')
    logging.error('我是一个错误级别的日志')
    logging.critical('我是一个严重错误级别的日志')
